package br.com.map.model;

import java.io.Serializable;
import java.util.Date;

import template.Brincando;
import template.Dormindo;
import template.Estado;

public class BixoVirtual implements Serializable {

    private static BixoVirtual instancia;
    private static int saude;
    private int sono;
    private static int felicidade;
    private static double peso;
    private static int fome;
    private static Date dtNascimento;
    public Estado estado;

    private BixoVirtual() {
        saude = 100;
        felicidade = 100;
        this.sono = 50;
        fome = 50;
        peso = 1;
        dtNascimento = new Date();
    }
    
    public static synchronized BixoVirtual getInstance() {
        if (instancia == null) {
            instancia = new BixoVirtual();
        }
        return instancia;
    }
    
    public void comer(Comida comida){
        BixoVirtual.fome -= comida.getPorcao();
    }
    
    public void brincar() {
    	Brincando brincar = new Brincando(); 
    	brincar.decrementaStatus(instancia);
    }
    
    public void dormir() {
    	Dormindo dormir = new Dormindo();
    	dormir.decrementaStatus(instancia);
    }
       
    public static void setInstancia(BixoVirtual instancia) {
        BixoVirtual.instancia = instancia;
    }

    public static int getSaude() {
        return saude;
    }

    public static void setSaude(int saude) {
        BixoVirtual.saude = saude;
    }

    public int getSono() {
        return sono;
    }

    public void setSono(int sono) {
        this.sono = sono;
    }

    public static int getFelicidade() {
        return felicidade;
    }

    public static void setFelicidade(int felicidade) {
        BixoVirtual.felicidade = felicidade;
    }

    public static double getPeso() {
        return peso;
    }

    public static void setPeso(double peso) {
        BixoVirtual.peso = peso;
    }

    public static int getFome() {
        return fome;
    }

    public static void setFome(int fome) {
        BixoVirtual.fome = fome;
    }

    public static Date getDtNascimento() {
        return dtNascimento;
    }

    public static void setDtNascimento(Date dtNascimento) {
        BixoVirtual.dtNascimento = dtNascimento;
    }

    public Estado getEstado() {
        return estado;
    }

    public void setEstado(Estado estado) {
        this.estado = estado;
    }
    
    public void decrementaStatus(){
        this.estado.decrementaStatus(this);
    }

}
